package com.research.domain.entity;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.common.annotation.Excels;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.common.annotation.Excel;
import com.common.core.domain.BaseEntity;

/**
 * 研究机构-教育部统计对象 biz_education_stat
 *
 * @author hst
 * @date 2025-03-17
 */
@Data
@TableName("biz_education_stat")
public class EducationStat extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    private String id;

    /** 机构ID */
    //@Excel(name = "机构ID")
    private String researchUnitId;

    @TableField(exist = false)
    @Excel(name = "机构名称")
    private String researchUnitName;

    /** 年度 */
    @Excel(name = "年度")
    private String statYear;

    /** 归属统计 */
    //@Excel(name = "归属统计")
    private String subjectClassId;

    @TableField(exist = false)
    @Excel(name = "归属统计")
    private String subjectClassLable;

    /** 机构类型 */
    //@Excel(name = "机构类型")
    private String unitType;

    @TableField(exist = false)
    @Excel(name = "机构类型")
    private String unitTypeLable;

    /** 机构类别 */
    //@Excel(name = "机构类别")
    private String unitClsType;

    @TableField(exist = false)
    @Excel(name = "机构类别")
    private String unitClsTypeLable;

    /** 组成形式 */
    //@Excel(name = "组成形式")
    private String formId;

    @TableField(exist = false)
    @Excel(name = "组成形式")
    private String formLable;

    /** 组成类型 */
    //@Excel(name = "组成类型")
    private String formClsId;

    @TableField(exist = false)
    @Excel(name = "组成类型")
    private String formClsLable;

    /** 国民经济行业 */
    //@Excel(name = "国民经济行业")
    private String gmjjhy;

    @TableField(exist = false)
    @Excel(name = "国民经济行业")
    private String gmjjhyLable;

    /** 学科分类 */
    //@Excel(name = "学科分类")
    private String subjectId;

    @TableField(exist = false)
    @Excel(name = "学科分类")
    private String subjectLable;

    /** 二级学科 */
    //@Excel(name = "二级学科")
    private String subjectIdSub;

    @TableField(exist = false)
    @Excel(name = "二级学科")
    private String subjectSubLable;

    /** 成立时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "成立时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date establishDate;

    /** 批准部门 */
    //@Excel(name = "批准部门")
    private String approvalDept;

    @TableField(exist = false)
    @Excel(name = "批准部门")
    private String approvalDeptLable;

    /** 博士 */
    @Excel(name = "博士")
    private Long doctorNum;

    /** 硕士 */
    @Excel(name = "硕士")
    private Long masterNum;

    /** 培养研究生 */
    @Excel(name = "培养研究生")
    private Long graduateStuNum;

    /** 科技活动人员 */
    @Excel(name = "科技活动人员")
    private Long activePersNum;

    /** 高级职称 */
    @Excel(name = "高级职称")
    private Long seniorNum;

    /** 中级职称 */
    @Excel(name = "中级职称")
    private Long intermediateNum;

    /** 初级职称 */
    @Excel(name = "初级职称")
    private Long primaryNum;

    /** 其他 */
    @Excel(name = "其他")
    private Long othersNum;

    /** 承担项目 */
    @Excel(name = "承担项目")
    private Long chargedProNum;

    /** 当年经费内部支出 */
    @Excel(name = "当年经费内部支出")
    private BigDecimal curYearPay;

    /** 当年RD支出 */
    @Excel(name = "当年RD支出")
    private BigDecimal curyearRdPay;

    /** RD经费支出 */
    @Excel(name = "RD经费支出")
    private BigDecimal rdPay;

    /** 仪器设备原价 */
    @Excel(name = "仪器设备原价")
    private BigDecimal originalCost;

    /** 进口 */
    @Excel(name = "进口")
    private BigDecimal importCost;

    private String createUserId;
    private String lastEditUserId;
    private Date createDate;
    private Date lastEditDate;
    private String createUserName;
    private String lastEditUserName;

    /** 固定资产原值 */
    @Excel(name = "固定资产原值")
    private BigDecimal assetsValue;

//    @Excels({
//        @Excel(name = "机构名称", targetAttr = "name", type = Excel.Type.EXPORT),
//    })
//    @TableField(exist = false)
//    private ResearchUnit researchUnit;

    public void setId(String id)
    {
        this.id = id;
    }

    public String getId()
    {
        return id;
    }
    public void setResearchUnitId(String researchUnitId)
    {
        this.researchUnitId = researchUnitId;
    }

    public String getResearchUnitId()
    {
        return researchUnitId;
    }
    public void setStatYear(String statYear)
    {
        this.statYear = statYear;
    }

    public String getStatYear()
    {
        return statYear;
    }
    public void setSubjectClassId(String subjectClassId)
    {
        this.subjectClassId = subjectClassId;
    }

    public String getSubjectClassId()
    {
        return subjectClassId;
    }
    public void setUnitType(String unitType)
    {
        this.unitType = unitType;
    }

    public String getUnitType()
    {
        return unitType;
    }
    public void setUnitClsType(String unitClsType)
    {
        this.unitClsType = unitClsType;
    }

    public String getUnitClsType()
    {
        return unitClsType;
    }
    public void setFormId(String formId)
    {
        this.formId = formId;
    }

    public String getFormId()
    {
        return formId;
    }
    public void setFormClsId(String formClsId)
    {
        this.formClsId = formClsId;
    }

    public String getFormClsId()
    {
        return formClsId;
    }
    public void setGmjjhy(String gmjjhy)
    {
        this.gmjjhy = gmjjhy;
    }

    public String getGmjjhy()
    {
        return gmjjhy;
    }
    public void setSubjectId(String subjectId)
    {
        this.subjectId = subjectId;
    }

    public String getSubjectId()
    {
        return subjectId;
    }
    public void setSubjectIdSub(String subjectIdSub)
    {
        this.subjectIdSub = subjectIdSub;
    }

    public String getSubjectIdSub()
    {
        return subjectIdSub;
    }
    public void setEstablishDate(Date establishDate)
    {
        this.establishDate = establishDate;
    }

    public Date getEstablishDate()
    {
        return establishDate;
    }
    public void setApprovalDept(String approvalDept)
    {
        this.approvalDept = approvalDept;
    }

    public String getApprovalDept()
    {
        return approvalDept;
    }
    public void setDoctorNum(Long doctorNum)
    {
        this.doctorNum = doctorNum;
    }

    public Long getDoctorNum()
    {
        return doctorNum;
    }
    public void setMasterNum(Long masterNum)
    {
        this.masterNum = masterNum;
    }

    public Long getMasterNum()
    {
        return masterNum;
    }
    public void setGraduateStuNum(Long graduateStuNum)
    {
        this.graduateStuNum = graduateStuNum;
    }

    public Long getGraduateStuNum()
    {
        return graduateStuNum;
    }
    public void setActivePersNum(Long activePersNum)
    {
        this.activePersNum = activePersNum;
    }

    public Long getActivePersNum()
    {
        return activePersNum;
    }
    public void setSeniorNum(Long seniorNum)
    {
        this.seniorNum = seniorNum;
    }

    public Long getSeniorNum()
    {
        return seniorNum;
    }
    public void setIntermediateNum(Long intermediateNum)
    {
        this.intermediateNum = intermediateNum;
    }

    public Long getIntermediateNum()
    {
        return intermediateNum;
    }
    public void setPrimaryNum(Long primaryNum)
    {
        this.primaryNum = primaryNum;
    }

    public Long getPrimaryNum()
    {
        return primaryNum;
    }
    public void setOthersNum(Long othersNum)
    {
        this.othersNum = othersNum;
    }

    public Long getOthersNum()
    {
        return othersNum;
    }
    public void setChargedProNum(Long chargedProNum)
    {
        this.chargedProNum = chargedProNum;
    }

    public Long getChargedProNum()
    {
        return chargedProNum;
    }
    public void setCurYearPay(BigDecimal curYearPay)
    {
        this.curYearPay = curYearPay;
    }

    public BigDecimal getCurYearPay()
    {
        return curYearPay;
    }
    public void setCuryearRdPay(BigDecimal curyearRdPay)
    {
        this.curyearRdPay = curyearRdPay;
    }

    public BigDecimal getCuryearRdPay()
    {
        return curyearRdPay;
    }
    public void setRdPay(BigDecimal rdPay)
    {
        this.rdPay = rdPay;
    }

    public BigDecimal getRdPay()
    {
        return rdPay;
    }
    public void setOriginalCost(BigDecimal originalCost)
    {
        this.originalCost = originalCost;
    }

    public BigDecimal getOriginalCost()
    {
        return originalCost;
    }
    public void setImportCost(BigDecimal importCost)
    {
        this.importCost = importCost;
    }

    public BigDecimal getImportCost()
    {
        return importCost;
    }
    public void setCreateUserId(String createUserId)
    {
        this.createUserId = createUserId;
    }

    public String getCreateUserId()
    {
        return createUserId;
    }
    public void setLastEditUserId(String lastEditUserId)
    {
        this.lastEditUserId = lastEditUserId;
    }

    public String getLastEditUserId()
    {
        return lastEditUserId;
    }
    public void setCreateDate(Date createDate)
    {
        this.createDate = createDate;
    }

    public Date getCreateDate()
    {
        return createDate;
    }
    public void setLastEditDate(Date lastEditDate)
    {
        this.lastEditDate = lastEditDate;
    }

    public Date getLastEditDate()
    {
        return lastEditDate;
    }
    public void setCreateUserName(String createUserName)
    {
        this.createUserName = createUserName;
    }

    public String getCreateUserName()
    {
        return createUserName;
    }
    public void setLastEditUserName(String lastEditUserName)
    {
        this.lastEditUserName = lastEditUserName;
    }

    public String getLastEditUserName()
    {
        return lastEditUserName;
    }
    public void setAssetsValue(BigDecimal assetsValue)
    {
        this.assetsValue = assetsValue;
    }

    public BigDecimal getAssetsValue()
    {
        return assetsValue;
    }

//    public ResearchUnit getResearchUnit()
//    {
//        return researchUnit;
//    }
//
//    public void setResearchUnit(ResearchUnit researchUnit)
//    {
//        this.researchUnit = researchUnit;
//    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("researchUnitId", getResearchUnitId())
                .append("statYear", getStatYear())
                .append("subjectClassId", getSubjectClassId())
                .append("unitType", getUnitType())
                .append("unitClsType", getUnitClsType())
                .append("formId", getFormId())
                .append("formClsId", getFormClsId())
                .append("gmjjhy", getGmjjhy())
                .append("subjectId", getSubjectId())
                .append("subjectIdSub", getSubjectIdSub())
                .append("establishDate", getEstablishDate())
                .append("approvalDept", getApprovalDept())
                .append("doctorNum", getDoctorNum())
                .append("masterNum", getMasterNum())
                .append("graduateStuNum", getGraduateStuNum())
                .append("activePersNum", getActivePersNum())
                .append("seniorNum", getSeniorNum())
                .append("intermediateNum", getIntermediateNum())
                .append("primaryNum", getPrimaryNum())
                .append("othersNum", getOthersNum())
                .append("chargedProNum", getChargedProNum())
                .append("curYearPay", getCurYearPay())
                .append("curyearRdPay", getCuryearRdPay())
                .append("rdPay", getRdPay())
                .append("originalCost", getOriginalCost())
                .append("importCost", getImportCost())
                .append("createUserId", getCreateUserId())
                .append("lastEditUserId", getLastEditUserId())
                .append("createDate", getCreateDate())
                .append("lastEditDate", getLastEditDate())
                .append("createUserName", getCreateUserName())
                .append("lastEditUserName", getLastEditUserName())
                .append("assetsValue", getAssetsValue())
                .toString();
    }
}
